package com.gjx.leetcode;
//24. 两两交换链表中的节点
//
//给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
//
//你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
//
// 
//
//示例:
//
//给定 1->2->3->4, 你应该返回 2->1->4->3.
public class Solution024 {
	public ListNode swapPairs(ListNode head) {
        
		if (head == null || head.next == null) {
			return head;
		}
		
		ListNode dummy = new ListNode(0);
		dummy.next = head;
		
		ListNode cur = dummy;
		
		while (cur.next != null && cur.next.next != null) {
			
			ListNode pre = cur.next;
			ListNode next = cur.next.next;
			
			cur.next = next;
			pre.next = next.next;
			next.next = pre;
			cur = cur.next.next;
			
		}
		
		return dummy.next;
    }
}
